package com.cloud.charts4a.util;

import java.util.Random;

/**
 * Math Utility class<p/>
 *
 * @version
 * <ol>
 * 	<li>2010/07/09 CloudTu：First Release</li>
 * </ol>
 * 
 * @author Cloud Tu
 */
public class MathUtil {
	/**
	 * Math Utility class
	 */
	private MathUtil(){		
	}
	
	/**
	 * 以亂數產生數值
	 * 
	 * @param min		量測值下限
	 * @param max		量測值上限
	 * 
	 * @return			以亂數產生數值
	 */
	public static int createRandomValue(int min,int max){
		Random random = new Random();
		return random.nextInt(max-min+1) + min;						
	}   
	
	/**
	 * 不足10的數值，進行補零的動作
	 * 
	 * @param value	要被轉換的數值
	 * 
	 * @return	數值在進行過補零動作後，所轉換成的字串
	 */
    public static String pad(int value) {
        if (value >= 10)
            return String.valueOf(value);
        else
            return "0" + String.valueOf(value);
    }    	

    /**
     * 四捨五入至小數點後特定位數之值
     * 
     * @param value	要被計算之值
     * @param scale	小數點後的位數( 此值必需 >= 0 )
     * 
     * @return	四捨五入至小數點後特定位數之值
     * 
	 * @throws	執行異常時會丟出RuntimeExcepion
     */
    public static double round(double value,int scale){    	
    	if(scale > 0){
    		return (double)((long)(value * Math.pow(10, scale) + 0.5)) / Math.pow(10, scale);	
    	}
    	
    	if(scale == 0){
    		return Math.round(value);
    	}
    	
    	throw new RuntimeException("scale parameter must be positive or zero");    	  
    }         
}
